package controllers;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import job.LoadParamJob;
import job.MajorJob;

import org.apache.commons.lang.StringUtils;

import play.cache.Cache;

import com.github.pagehelper.PageInfo;

import models.SystemOperator;
import models.SystemParams;
import services.LogService;
import services.OperatorService;
import services.SystemParamService;
import utils.BizConstants;
import vos.ReturnCode;
import vos.ReturnListVo;
import vos.SystemOperatorVo;
import vos.SystemParamVo;

/**
 * 参数管理控制类
 * @author wangshaoming
 *
 */
public class ParamController extends BaseController {
	/**
	 * 跳转参数管理页
	 */
	public static void paramManage(){
		List<SystemParams> params=SystemParamService.getParams();
		SystemParamVo vo=new SystemParamVo();
		Field[] filds=vo.getClass().getDeclaredFields();
		try{
			for(SystemParams param : params){
				if(StringUtils.isEmpty(param.getParamvalue())){
					continue;
				}
				for(int i=0;i<filds.length;i++){
					if(param.getParamid().equals(filds[i].getName())){
						filds[i].set(vo, filds[i].getType().getConstructor(filds[i].getType()).newInstance(param.getParamvalue()));
					}
				}
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		renderArgs.put("param", vo);
		render();
	}
	
	/**
	 * 跳转到列表页
	 */
	public static void paramList(){
		render();
	}
	/**
	 * 获取用户列表
	 * @param page
	 * @param rows
	 * @param sort
	 * @param order
	 * @param searchText 搜索条件
	 */
	public static void getList(int page,int rows,String sort,String order,
			String searchText){
		PageInfo<SystemParams> params=SystemParamService.getList(page,rows,sort,order,searchText);
		renderJSON(new ReturnListVo(params.getTotal(),params.getList()));
	}
	/**
	 * 编辑
	 * @param paramid
	 */
	public static void editParam(String paramid){
		SystemParams param=SystemParamService.getById(paramid);
		renderArgs.put("param", param);
		render();
	}
	/**
	 * 更新参数信息
	 * @param param
	 */
	public static void updtaeParam(SystemParams param){
		response.contentType="text/html;charset=utf-8";
		if(param==null){
			renderRespondJson(ReturnCode.ErrorCode, "请输入完整信息");
		}
		if(StringUtils.isEmpty(param.getParamid())){
			renderRespondJson(ReturnCode.ErrorCode, "请选择要修改的信息");
		}
		if(StringUtils.isNotEmpty(param.getParamvalue())&&param.getParamvalue().length()>100){
			renderRespondJson(ReturnCode.ErrorCode, "参数值长度不可大于1000字");
		}
		if(StringUtils.isNotEmpty(param.getRemark())&&param.getRemark().length()>500){
			renderRespondJson(ReturnCode.ErrorCode, "备注不可大于500字");
		}
		SystemOperator oper=getLoginUser();
		String ip=request.remoteAddress;
		boolean issave=SystemParamService.updateParam(param,oper,ip);
		if(issave){
			renderRespondJson(ReturnCode.SuccessCode, "保存成功");
		}
		renderRespondJson(ReturnCode.SuccessCode, "保存失败");
	}
	/**
	 * 更新缓存中的参数
	 */
	public static void updateCache(){
		new LoadParamJob().now();
		SystemOperator oper=getLoginUser();
		String ip=request.remoteAddress;
		LogService.saveLog(oper.getOperatorid(), ip, "同步参数", "同步参数", new Date());
		renderRespondJson(ReturnCode.SuccessCode, "同步成功");
	}
}
